package com.web.kdl.pojo.Vo.site;

import com.baomidou.mybatisplus.annotation.TableField;
import com.web.kdl.entity.flywheelDataAnalysis.FlywheelDataAnalysis;
import com.web.kdl.pojo.dto.FlywheelMainDto;
import com.web.kdl.pojo.Vo.EnergyDataVo;
import lombok.Data;

import java.util.List;

/**
 * @Author： shulibin
 * @Date： 2025/7/29 8:18
 * @Describe：
 */
@Data
public class SiteBaseVo {

//     系统状态 （4个飞轮)
    private String siteStatus;

//     系统容量 （4个飞轮总和）
    private String sumSiteCap;

//     累计充电量
    private String sumSiteTotChar;

//     累计放电量
    private String sumSiteTotDisChar;


    public void formatValues() {
        if (sumSiteCap != null) {
            sumSiteCap = String.format("%.2f", Double.parseDouble(sumSiteCap));
        }
        if (sumSiteTotChar != null) {
            sumSiteTotChar = String.format("%.2f", Double.parseDouble(sumSiteTotChar));
        }
        if (sumSiteTotDisChar != null) {
            sumSiteTotDisChar = String.format("%.2f", Double.parseDouble(sumSiteTotDisChar));
        }
    }
    /**
     * 系统容量 （4个飞轮总和） 累计充电量 累计放电量 站点电量信息
     * @param dataDto
     */
    public void add(List<FlywheelDataAnalysis> dataDto) {
        for (FlywheelDataAnalysis dto : dataDto) {
            switch (dto.getDeviceName()) {
                case "系统容量":
                    this.sumSiteCap = addValues(this.sumSiteCap, String.valueOf(dto.getDataValue()));
                    break;
                case "总充电量":
                    this.sumSiteTotChar = addValues(this.sumSiteTotChar, String.valueOf(dto.getDataValue()));
                    break;
                case "总放电量":
                    this.sumSiteTotDisChar = addValues(this.sumSiteTotDisChar, String.valueOf(dto.getDataValue()));
                    break;
            }
        }
    }

    /**
     * 辅助方法：将两个字符串表示的数字相加，处理可能的 null 值
     * @param value1 第一个值（可能为 null）
     * @param value2 第二个值（可能为 null）
     * @return 相加后的结果（字符串形式）
     */
    private String addValues(String value1, String value2) {
        double num1 = value1 != null ? Double.parseDouble(value1) : 0.0;
        double num2 = value2 != null ? Double.parseDouble(value2) : 0.0;
        return String.valueOf(num1 + num2);
    }

    //     站点详细信息(独立接口)
    @Data
    public static class SiteMonVo {
        // 类型
        private final String type="重要";
        // 分站点
        private String subSite;
        // 设备
        private String deviceName;
        // 事件
        private String event;
        // 时间
        private String time;
    }
    @Data
    public static class FlyWheelStatus{
        private String flyWheelName;
        private String flyWheelStatus;
    }

}
